<html>
<head><meta charset="utf-8"><title>project ideas? · wg-secure-code · Zulip Chat Archive</title></head>
<h2>Stream: <a href="https://rust-lang.github.io/zulip_archive/stream/146229-wg-secure-code/index.html">wg-secure-code</a></h2>
<h3>Topic: <a href="https://rust-lang.github.io/zulip_archive/stream/146229-wg-secure-code/topic/project.20ideas.3F.html">project ideas?</a></h3>

<hr>

<base href="https://rust-lang.zulipchat.com">

<head><link href="https://rust-lang.github.io/zulip_archive/style.css" rel="stylesheet"></head>

<a name="146818160"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/146229-wg-secure-code/topic/project%20ideas%3F/near/146818160" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Shnatsel <a href="https://rust-lang.github.io/zulip_archive/stream/146229-wg-secure-code/topic/project.20ideas.3F.html#146818160">(Nov 05 2018 at 19:36)</a>:</h4>
<p>My new job is so awesome that I get 2 weeks of paid work time to work with a small team on a project of our choosing. It will most likely be coded in Go. Any ideas on what it could be that would be beneficial to Rust ecosystem?<br>
No guarantees on whether it would be released to the public, but I could get something prototyped for you at least</p>



<a name="146818424"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/146229-wg-secure-code/topic/project%20ideas%3F/near/146818424" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Liebow-Feeser <a href="https://rust-lang.github.io/zulip_archive/stream/146229-wg-secure-code/topic/project.20ideas.3F.html#146818424">(Nov 05 2018 at 19:39)</a>:</h4>
<p>Add support for modifying symbols in object files. Currently the Go standard library only supports parsing object files.</p>



<a name="146818531"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/146229-wg-secure-code/topic/project%20ideas%3F/near/146818531" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Liebow-Feeser <a href="https://rust-lang.github.io/zulip_archive/stream/146229-wg-secure-code/topic/project.20ideas.3F.html#146818531">(Nov 05 2018 at 19:40)</a>:</h4>
<p>That may sound out of left field, but it would unlock using multiple different versions of a Rust crate which depends on a C library.</p>



<a name="146818566"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/146229-wg-secure-code/topic/project%20ideas%3F/near/146818566" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Liebow-Feeser <a href="https://rust-lang.github.io/zulip_archive/stream/146229-wg-secure-code/topic/project.20ideas.3F.html#146818566">(Nov 05 2018 at 19:41)</a>:</h4>
<p>Obviously even better if it's in Rust rather than Go, but anything would be great.</p>



<a name="146819172"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/146229-wg-secure-code/topic/project%20ideas%3F/near/146819172" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Shnatsel <a href="https://rust-lang.github.io/zulip_archive/stream/146229-wg-secure-code/topic/project.20ideas.3F.html#146819172">(Nov 05 2018 at 19:48)</a>:</h4>
<p>I'm not sure I understand the task. Are we talking about .o files? What kind of modifications do you expect and what are the use cases?</p>



<a name="146819285"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/146229-wg-secure-code/topic/project%20ideas%3F/near/146819285" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Liebow-Feeser <a href="https://rust-lang.github.io/zulip_archive/stream/146229-wg-secure-code/topic/project.20ideas.3F.html#146819285">(Nov 05 2018 at 19:50)</a>:</h4>
<p>Whatever the platform-specific object file format is. Mach-O for Mac, ELF for Linux, PE for Windows, etc. I think those three would be the biggest deal. Most crates probably don't target outside of those three.</p>



<a name="146819300"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/146229-wg-secure-code/topic/project%20ideas%3F/near/146819300" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Liebow-Feeser <a href="https://rust-lang.github.io/zulip_archive/stream/146229-wg-secure-code/topic/project.20ideas.3F.html#146819300">(Nov 05 2018 at 19:50)</a>:</h4>
<p>And the modifications are simply symbol renaming.</p>



<a name="146819330"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/146229-wg-secure-code/topic/project%20ideas%3F/near/146819330" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Liebow-Feeser <a href="https://rust-lang.github.io/zulip_archive/stream/146229-wg-secure-code/topic/project.20ideas.3F.html#146819330">(Nov 05 2018 at 19:50)</a>:</h4>
<p>The goal is to compile and then rename the objects in the object file with a custom prefix which is specific to this version of your crate.</p>



<a name="146819385"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/146229-wg-secure-code/topic/project%20ideas%3F/near/146819385" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Liebow-Feeser <a href="https://rust-lang.github.io/zulip_archive/stream/146229-wg-secure-code/topic/project.20ideas.3F.html#146819385">(Nov 05 2018 at 19:51)</a>:</h4>
<p>E.g., say you have a crate called <code>foo</code>. If you were compiling version 1.2.3 of that crate, you'd add the prefix <code>__FOO_1_2_3_</code> to all of the symbols. That way, two different object files build from the same library but built for different versions of the crate would have no overlapping symbols, and so linking would succeed.</p>



<a name="146819461"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/146229-wg-secure-code/topic/project%20ideas%3F/near/146819461" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Shnatsel <a href="https://rust-lang.github.io/zulip_archive/stream/146229-wg-secure-code/topic/project.20ideas.3F.html#146819461">(Nov 05 2018 at 19:52)</a>:</h4>
<p>That... sounds actually pretty trivial. Is there any reason it hasn't been done before?</p>



<a name="146819478"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/146229-wg-secure-code/topic/project%20ideas%3F/near/146819478" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Liebow-Feeser <a href="https://rust-lang.github.io/zulip_archive/stream/146229-wg-secure-code/topic/project.20ideas.3F.html#146819478">(Nov 05 2018 at 19:52)</a>:</h4>
<p>Not sure why. I suspect it just wasn't needed for their use cases.</p>



<a name="146819524"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/146229-wg-secure-code/topic/project%20ideas%3F/near/146819524" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Liebow-Feeser <a href="https://rust-lang.github.io/zulip_archive/stream/146229-wg-secure-code/topic/project.20ideas.3F.html#146819524">(Nov 05 2018 at 19:53)</a>:</h4>
<p>If you want more details on how this works - and the awful lengths you have to go to if you don't have object-file-level symbol renaming - see the README here: <a href="https://github.com/google/mundane/tree/master/boringssl" target="_blank" title="https://github.com/google/mundane/tree/master/boringssl">https://github.com/google/mundane/tree/master/boringssl</a></p>



<a name="146820292"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/146229-wg-secure-code/topic/project%20ideas%3F/near/146820292" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Shnatsel <a href="https://rust-lang.github.io/zulip_archive/stream/146229-wg-secure-code/topic/project.20ideas.3F.html#146820292">(Nov 05 2018 at 20:05)</a>:</h4>
<p>Why have I never heard of Mundane before? It actually looks very interesting</p>



<a name="146820341"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/146229-wg-secure-code/topic/project%20ideas%3F/near/146820341" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Liebow-Feeser <a href="https://rust-lang.github.io/zulip_archive/stream/146229-wg-secure-code/topic/project.20ideas.3F.html#146820341">(Nov 05 2018 at 20:06)</a>:</h4>
<p>We haven't officially announced it yet. It's been on my back burner, but I got super swamped with other stuff recently.</p>



<a name="146820348"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/146229-wg-secure-code/topic/project%20ideas%3F/near/146820348" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Alex Gaynor <a href="https://rust-lang.github.io/zulip_archive/stream/146229-wg-secure-code/topic/project.20ideas.3F.html#146820348">(Nov 05 2018 at 20:06)</a>:</h4>
<p>Is mundane no longer developed on the fuschia git?</p>



<a name="146820358"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/146229-wg-secure-code/topic/project%20ideas%3F/near/146820358" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Liebow-Feeser <a href="https://rust-lang.github.io/zulip_archive/stream/146229-wg-secure-code/topic/project.20ideas.3F.html#146820358">(Nov 05 2018 at 20:06)</a>:</h4>
<p>It is, but it's mirrored to GitHub.</p>



<a name="146820375"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/146229-wg-secure-code/topic/project%20ideas%3F/near/146820375" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Liebow-Feeser <a href="https://rust-lang.github.io/zulip_archive/stream/146229-wg-secure-code/topic/project.20ideas.3F.html#146820375">(Nov 05 2018 at 20:07)</a>:</h4>
<p>The source of truth is in a separate repo now, but still in <a href="http://fuchsia.googlesource.com" target="_blank" title="http://fuchsia.googlesource.com">fuchsia.googlesource.com</a>: <a href="https://fuchsia.googlesource.com/mundane" target="_blank" title="https://fuchsia.googlesource.com/mundane">https://fuchsia.googlesource.com/mundane</a></p>



<a name="146820411"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/146229-wg-secure-code/topic/project%20ideas%3F/near/146820411" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Liebow-Feeser <a href="https://rust-lang.github.io/zulip_archive/stream/146229-wg-secure-code/topic/project.20ideas.3F.html#146820411">(Nov 05 2018 at 20:07)</a>:</h4>
<p>And <span class="user-mention" data-user-id="127617">@Shnatsel</span>, to give you a sense of how awesome it'd be to have object file symbol renaming, it took me probably a month of full time work to get the symbol renaming in Mundane working.</p>



<a name="146820456"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/146229-wg-secure-code/topic/project%20ideas%3F/near/146820456" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Liebow-Feeser <a href="https://rust-lang.github.io/zulip_archive/stream/146229-wg-secure-code/topic/project.20ideas.3F.html#146820456">(Nov 05 2018 at 20:08)</a>:</h4>
<p>Part of that was adding symbol prefixing support to BoringSSL, and part of it was integrating it into Mundane. It was a giant PITA.</p>



<a name="146820476"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/146229-wg-secure-code/topic/project%20ideas%3F/near/146820476" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Shnatsel <a href="https://rust-lang.github.io/zulip_archive/stream/146229-wg-secure-code/topic/project.20ideas.3F.html#146820476">(Nov 05 2018 at 20:08)</a>:</h4>
<p>C build systems are always a giant PITA</p>



<a name="146820525"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/146229-wg-secure-code/topic/project%20ideas%3F/near/146820525" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Shnatsel <a href="https://rust-lang.github.io/zulip_archive/stream/146229-wg-secure-code/topic/project.20ideas.3F.html#146820525">(Nov 05 2018 at 20:10)</a>:</h4>
<p>I trust you've written the Go program to discover symbols as well?</p>



<a name="146820677"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/146229-wg-secure-code/topic/project%20ideas%3F/near/146820677" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Shnatsel <a href="https://rust-lang.github.io/zulip_archive/stream/146229-wg-secure-code/topic/project.20ideas.3F.html#146820677">(Nov 05 2018 at 20:11)</a>:</h4>
<p>Anyway, thanks for the input, I'll float that idea to the team</p>



<a name="146821440"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/146229-wg-secure-code/topic/project%20ideas%3F/near/146821440" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Tony Arcieri <a href="https://rust-lang.github.io/zulip_archive/stream/146229-wg-secure-code/topic/project.20ideas.3F.html#146821440">(Nov 05 2018 at 20:24)</a>:</h4>
<p><span class="user-mention" data-user-id="127617">@Shnatsel</span> productionize <a href="https://blog.filippo.io/rustgo/" target="_blank" title="https://blog.filippo.io/rustgo/">https://blog.filippo.io/rustgo/</a> ? <span class="emoji emoji-1f61c" title="stuck out tongue wink">:stuck_out_tongue_wink:</span></p>



<a name="146821488"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/146229-wg-secure-code/topic/project%20ideas%3F/near/146821488" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Shnatsel <a href="https://rust-lang.github.io/zulip_archive/stream/146229-wg-secure-code/topic/project.20ideas.3F.html#146821488">(Nov 05 2018 at 20:25)</a>:</h4>
<p>Why is that different from linking C libraries? Or that's somehow made a PITA in Go?</p>



<a name="146821546"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/146229-wg-secure-code/topic/project%20ideas%3F/near/146821546" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Tony Arcieri <a href="https://rust-lang.github.io/zulip_archive/stream/146229-wg-secure-code/topic/project.20ideas.3F.html#146821546">(Nov 05 2018 at 20:26)</a>:</h4>
<p>it avoids CGo and libffi and the associated overhead</p>



<a name="146821953"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/146229-wg-secure-code/topic/project%20ideas%3F/near/146821953" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Shnatsel <a href="https://rust-lang.github.io/zulip_archive/stream/146229-wg-secure-code/topic/project.20ideas.3F.html#146821953">(Nov 05 2018 at 20:33)</a>:</h4>
<p>Okay, that's pretty cool, but I'm not sure I can handle that much unsafety, and I have no clue how to debug what's going on. Still, that's neat. I'll float this idea</p>



<a name="146826830"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/146229-wg-secure-code/topic/project%20ideas%3F/near/146826830" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Tony Arcieri <a href="https://rust-lang.github.io/zulip_archive/stream/146229-wg-secure-code/topic/project.20ideas.3F.html#146826830">(Nov 05 2018 at 21:49)</a>:</h4>
<p>indeed it seems hard <span class="emoji emoji-1f635" title="dizzy">:dizzy:</span></p>



<hr><p>Last updated: Aug 07 2021 at 22:04 UTC</p>
</html>